package chap4_4对象序列化流;

import java.io.*;

/**
 * @author https://gitee.com/W_Jun
 * @date 2021-12-17 14:21
 * @Description 序列化的三个问题
 *
 *      异常java.io.InvalidClassException：当序列化运行时检测到类中的以下问题之一时抛出。
 *         （1）类的串行版本与从流中读取的类描述符的类型不匹配。
 *         （2）该类包含未知的数据类型。
 *         （3）该类没有可访问的无参构造函数。
 */
public class ObjectStream {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //先执行write()方法
        //write();
        //执行了write()之后，修改Student类，比如给Student类重写toString方法
        //然后再注释掉write()的调用，执行read()方法
        read();
    }
    //反序列化
    private static void read() throws IOException, ClassNotFoundException {
        ObjectInputStream ois = new ObjectInputStream(
                new FileInputStream("chapter04-特殊操作流\\src\\chap4_4对象序列化流\\oos.txt")
        );
        Object obj = ois.readObject();
        Student s = (Student) obj;
        System.out.println(s.getName()+","+s.getAge());
        ois.close();
    }
    //序列化
    private static void write() throws IOException {
        ObjectOutputStream oos = new ObjectOutputStream(
                new FileOutputStream("chapter04-特殊操作流\\src\\chap4_4对象序列化流\\oos.txt")
        );
        Student s = new Student("张三",30);
        oos.writeObject(s);
        oos.close();
    }
}
